Vue vs React

相同点:

  1. 都有 Virtual DOM
  2. 都支持服务端渲染。
  3. 都有支持 native 的方案。
  4. 组件化开发,通过 props 参数进行父子组件数据的传递。

不同点:

  1. 数据 Vue 双向绑定, React 单向数据流。
  2. Vue 默认使用 template 模板,更符合数据驱动的习惯;React 使用 JSX,更加的灵活。
  3. 改变数据方式不同,Vue 直接修改状态,React 需要使用 setState 来改变状态。Vue 页面更新渲染已经是最优的了,但是 React 还是需要用户手动去优化这方面的问题。
  4. Vue API 多,计算属性,watch 等很方便开发。React 相较于 Vue 来说上手成本略高。
  5. React 推荐的做法是 JSX + inline style,也就是把 HTML 和 CSS 全都写进 JavaScript 了,即"all in js";Vue 进阶之后推荐的是使用 webpack + vue-loader 的单文件组件格式,即 html,css,js 写在同一个文件;
  6. 开发模式:React 在 view 层侵入性还是要比 Vue 大很多的, React 严格上只针对 MVC 的 view 层,Vue 则是 MVVM 模式的一种实现

React 优势

  1. 在大型应用程序开发中提供更大的灵活性。
  2. 更容易测试。
  3. 提供更多的信息和解决方案,生态比 Vue 会丰富很多,Vue 主要是官方给出的解决方案比较完善。

单向数据流和双向数据流对比

单向绑定

优点

  • 单向绑定可以相应的带来单向数据流,这样的好处是所有的状态变化都是可以被记录、跟踪,状态变化通过手动调用通知,源头易追溯,没有“暗箱操作”。
  • 组件数据只有唯一的入口和出口,使得程序更加直观更容易理解,有利于应用的可维护性。

缺点

  • 代码量会相应的上升,数据的流转过程变长,从而出现很多类似的样板代码。
  • 由于对应用状态独立管理的严格要求(单一的全局 store),在处理局部状态较多的场景时,会显得啰嗦以及繁琐。

双向绑定

优点

  • 在表单交互较多的情况下,会简化大量业务无关的代码。

缺点

  • 由于都是“暗箱操作”,我们无法追踪局部状态的变化(虽然大部分情况下我们并不关心),潜在的行为太多也增加了出错时 debug 的难度。
  • 由于组件数据变化来源入口变的可能不止一个,新手很容易将数据流转方向弄的紊乱,如果再缺乏一些“管制”手段,最后就很容易一处错误操作造成应用雪崩。

Compositon API 与 React Hooks 对比

Last Updated:
Contributors: yiliang114